﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using CRC.Clases;
using CRC.Inspecciones.Dominio.Clases;
using CRC.Inspecciones.Dominio.Controlador;
using CRC.GestionSalones.Dominio.Clases;

namespace CRC.Inspecciones.Presentacion
{
    public partial class NuevaZona : UsrZona
    {

        private Controlador_NuevaZona cNuevaZona = new Controlador_NuevaZona();

        public NuevaZona()
        {
            InitializeComponent();
            ObtenerInspectores();
            this.ComboInspectores.SelectedIndex = -1;
        }

        private void ObtenerInspectores()
        {
            IList<Persona> inspectores = null;

            try {

                inspectores = cNuevaZona.VisualizarInspectores();
                this.ComboInspectores.DataSource = inspectores;
                this.ComboInspectores.DisplayMember = "NombreCompleto";
                this.ComboInspectores.ValueMember = "Id";

            } catch (Exception ex)
            {
                MessageBox.Show(
                    "Error al obtener los inspectores. " + ex.Message, 
                    "Error", 
                    MessageBoxButtons.OK, 
                    MessageBoxIcon.Error
                );
            }
        }

        public override void butOK_Click(object sender, EventArgs e) {
            
            if (TxtNombre.Text.Trim().Length == 0)
            {
                MessageBox.Show(
                    "El nombre de la zona es obligatorio", 
                    "Atención", 
                    MessageBoxButtons.OK, 
                    MessageBoxIcon.Exclamation
                );
                return;
            }

            if (this.ComboInspectores.SelectedItem == null) 
            {
                MessageBox.Show(
                   "Indica el inspector por favor.",
                   "Atención",
                   MessageBoxButtons.OK,
                   MessageBoxIcon.Exclamation
               );
               return;   
            }

            try 
            { 
                Zona zona = cNuevaZona.NuevaZona(
                    this.TxtNombre.Text.Trim(), 
                    (int)this.ComboInspectores.SelectedValue, 
                    (IList<Salon>)lstSalonesAsignados.DataSource
                );

                foreach (IListadoZonasListener listener in lstIListadoZonas)
                { listener.añadirZona(zona); }

                this.Dispose();
            
            }
            catch (Exception ex) 
            {
                MessageBox.Show(
                        ex.Message,
                        "Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error
                    );
            }

            
        }
    }
}
